package vip.george.p0896;

public class P896 {


    /**
     * 单次遍历
     * 使用相邻两项差值是否同符号的方式进行判断
     * @param nums
     * @return
     */
    public boolean isMonotonic(int[] nums) {
        int len = nums.length;
        if (len <= 2) {
            return true;
        }
        // 1 正数 -1 负数 0 零
        int flag = 0;
        for (int i = 0; i < len - 1; i++) {
            if (nums[i] < nums[i + 1]) {
                if (flag == -1) {
                    return false;
                }
                flag = 1;
            }
            if (nums[i] > nums[i + 1]){
                if (flag == 1) {
                    return false;
                }
                flag = -1;
            }
            //相邻两个元素相等的时候不用判断
        }
        return true;
    }


    /**
     * 单次遍历
     * 使用 递增和递减的标志进行判断
     * @param nums
     * @return
     */
    public boolean isMonotonic2(int[] nums) {
        boolean inc = true, dec = true;
        int n = nums.length;
        for (int i = 0; i < n - 1; ++i) {
            if (nums[i] > nums[i + 1]) {
                inc = false;
            }
            if (nums[i] < nums[i + 1]) {
                dec = false;
            }
            if (!inc && !dec) {
                return false;
            }
        }
        return true;
    }

    public static void main(String[] args) {
        P896 p = new P896();
        System.out.println(p.isMonotonic(new int[]{2, 2, 2, 2}));
        System.out.println(p.isMonotonic(new int[]{1, 2, 2, 3}));
        System.out.println(p.isMonotonic(new int[]{6, 5, 4, 4}));
        System.out.println(p.isMonotonic(new int[]{1, 3, 2}));
        System.out.println(p.isMonotonic(new int[]{-5, -3, -2}));
    }
}
